在处理稀疏矩阵时,matlab 中的矩阵求逆很困难

Matrix inversion is difficult in matlab when deal with sparse matrix

我实现了一个与稀疏矩阵求逆相关的算法。

代码:

kapa_t=phi_t*F_x'*(inv(inv(R_t)+F_x*phi_t*F_x'))*F_x*phi_t;

我在matlab中写下了代码。它给我一个警告 Matrix is close to singular or badly scaled。结果可能不准确。 RCOND = 4.419037e-18.。但根据我的算法,矩阵求逆是重要的部分。所以,我正在尝试为矩阵搜索一些有效的方法 inversion.So 我发现了这个 link 如何准确计算矩阵的逆?
所以我按照建议更改了我的代码。

kapa_t=phi_t*F_x'*(inv(inv(R_t)+F_x*phi_t*F_x'))\F_x*phi_t;

之后我得到一个错误 Error using \ 矩阵维度必须一致。

EKF_SLAM_known 错误(第 105 行) kapa_t=phi_tF_x'(inv(inv(R_t)+F_xphi_tF_x'))\F_x*phi_t;

我使用的算法是

这里算法的第8行相当于代码kapa_t=phi_tF_x'(inv(inv(R_t)+F_xphi_tF_x'))F_xphi_t;

我应该如何处理我的代码才能消除此警告。

kapa_t=phi_t*F_x'*(inv(inv(R_t)+F_x*phi_t*F_x'))\F_x*phi_t;

应该是

kapa_t=phi_t*F_x'*((inv(R_t)+F_x*phi_t*F_x')\F_x)*phi_t;

A为正方形时,A \ B运算符大致等同于inv(A) * B,因此您不需要外部inv.